#ifndef _GP_DJ_CTL_H
#define _GP_DJ_CTL_H


void djActFunc(void * paramIn,void * actResultOut);

int djCleanProcedure_p(int partIn);

int djCleanProcedure_q(int partIn);

//purifyCtl:0x00 means qpcr,
//0x01, purify big.
//0x11, purify small
//int dj_suck(void * paramIn, int purifyCtlIn);
int dj_suck(void * paramIn, int purifyCtlIn);

int dj_spit_once(void * paramIn, int purifyCtlIn, int zGoOrigin);

int dj_spit_multi(void * pstSpitParamIn,void * firstSpitPos,void * holeArr, int dataLen, int purifyCtlIn);

#define SID_DJP_X 29
#define SID_DJP_Y 30
#define SID_DJP_Z 31

#define SID_DJP_PUMP_BIG 44
#define SID_DJP_PUMP_SMALL 45

#define SID_DJQ_X 12
#define SID_DJQ_Y 17
#define SID_DJQ_Z 28

#define SID_DJQ_JAW 19
#define SID_DJQ_JAWZ 18

#define SID_DJQ_PUMP 46

int djconvertSuckParam(void * paramIn, void * paramOut);
int djconvertSpitParam(void * paramIn, void * paramOut);

int djXY_Move(void * paramIn, int isPurify);

int djXY_Move_withoutZup(void * paramIn, int isPurify);

int djQ_transBoard(void * paramIn);

int djconvertSpitParam_multi(void * paramIn, void * spitParamOut,void * layoutParamOut);

extern const float coeffUlToSteps_DJ_Z;//deltaUl -> deltaHeight -> steps
extern const float coeffmmToSteps_DJ_Z;//5.08mm<->3200 steps


int djconvertSpitParam_multi(int moduleIn,void * paramIn, void * spitParamOut,void * layoutParamOut);

int dj_module_init(int isPurify);

#define DJQ_JAW_OPEN_POS 1100
#define DJQ_JAW_CLOSE_POS 750
int getContainerType_Dj(int locTypeIn);


extern int g_isPurify;

int dj_purify_pump_init(void);

int dj_module_move(void * locIn,int qpcrId);

typedef enum
{
    DJ_PUMP_QPCR = 0,
    DJ_PUMP_PURIFY_BIG = 1,
    DJ_PUMP_PURIFY_SMALL = 3,
}en_dj_pump_type;


int dj_pump_ctl(int isSuck, int volume, int pumpType);

typedef enum
{
    DJ_CLEAN_OUTER,
    DJ_CLEAN_INNER,
    DJ_CLEAN_ALL,
}en_dj_clean_part;



#endif